home *** CD-ROM | disk | FTP | other *** search
/ Speccy ClassiX 1998 / Speccy ClassiX 98.iso / amiga_system / the_aminet / dev / gcc / ixemulsrc.lha / ixemul-41.4 / library / posixconf.c < prev    next >
C/C++ Source or Header  |  1995-05-28  |  3KB  |  144 lines

  1. /*
  2.  *  This file is part of ixemul.library for the Amiga.
  3.  *  Copyright (C) 1991, 1992  Markus M. Wild
  4.  *
  5.  *  This library is free software; you can redistribute it and/or
  6.  *  modify it under the terms of the GNU Library General Public
  7.  *  License as published by the Free Software Foundation; either
  8.  *  version 2 of the License, or (at your option) any later version.
  9.  *
  10.  *  This library is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  *  Library General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU Library General Public
  16.  *  License along with this library; if not, write to the Free
  17.  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  *
  19.  *  posixconf.c,v 1.1.1.1 1994/04/04 04:30:59 amiga Exp
  20.  *
  21.  *  posixconf.c,v
  22.  * Revision 1.1.1.1  1994/04/04  04:30:59  amiga
  23.  * Initial CVS check in.
  24.  *
  25.  *  Revision 1.2  1992/07/04  22:08:39  mwild
  26.  *  machlimits is now limits...
  27.  *
  28.  *  Revision 1.1  1992/05/22  01:50:03  mwild
  29.  *  Initial revision
  30.  *
  31.  */
  32.  
  33. #define KERNEL
  34. #include "ixemul.h"
  35. #include "kprintf.h"
  36. #include <unistd.h>
  37. #include <sys/syslimits.h>
  38. #include <machine/limits.h>
  39.  
  40. long
  41. sysconf (int name)
  42. {
  43.   switch (name)
  44.     {
  45.     case _SC_ARG_MAX:
  46.       return ARG_MAX;
  47.       
  48.     case _SC_CHILD_MAX:
  49.       return CHILD_MAX;
  50.       
  51.     case _SC_CLK_TCK:
  52.       return CLK_TCK;
  53.       
  54.     case _SC_NGROUPS_MAX:
  55.       return NGROUPS_MAX;
  56.       
  57.     case _SC_OPEN_MAX:
  58.       return OPEN_MAX;
  59.  
  60.     case _SC_JOB_CONTROL:
  61.       return _POSIX_JOB_CONTROL;
  62.     
  63.     case _SC_SAVED_IDS:
  64.       return _POSIX_SAVED_IDS;
  65.  
  66.     case _SC_VERSION:
  67.       return _POSIX_VERSION;
  68.       
  69.     default:
  70.       errno = EINVAL;
  71.       KPRINTF (("&errno = %lx, errno = %ld\n", &errno, errno));
  72.       return -1;
  73.     }
  74. }
  75.  
  76.  
  77. long
  78. fpathconf (int fd, int name)
  79. {
  80.   struct file *f = u.u_ofile[fd];
  81.  
  82.   if ((unsigned)fd >= NOFILE || !f)
  83.     {
  84.       errno = EBADF;
  85.       KPRINTF (("&errno = %lx, errno = %ld\n", &errno, errno));
  86.       return -1;
  87.     }
  88.  
  89.   switch (name)
  90.     {
  91.     case _PC_LINK_MAX:
  92.       return LINK_MAX;
  93.       
  94.     case _PC_MAX_CANON:
  95.       return MAX_CANON;
  96.       
  97.     case _PC_MAX_INPUT:
  98.       return MAX_INPUT;
  99.       
  100.     case _PC_NAME_MAX:
  101.       return NAME_MAX;    /* or 32 on AmigaDOS? What about NFS ? */
  102.       
  103.     case _PC_PATH_MAX:
  104.       return PATH_MAX;
  105.       
  106.     case _PC_PIPE_BUF:
  107.       return PIPE_BUF;
  108.       
  109.     case _PC_CHOWN_RESTRICTED:
  110.       return _POSIX_CHOWN_RESTRICTED;
  111.       
  112.     case _PC_NO_TRUNC:
  113.       return _POSIX_NO_TRUNC;
  114.     
  115.     case _PC_VDISABLE:
  116.       return _POSIX_VDISABLE;
  117.  
  118.     default:
  119.       errno = EINVAL;
  120.       KPRINTF (("&errno = %lx, errno = %ld\n", &errno, errno));
  121.       return -1;
  122.     }
  123. }
  124.  
  125.  
  126. long
  127. pathconf (const char *file, int name)
  128. {
  129.   int fd = open (file, 0);
  130.   
  131.   if (fd >= 0)
  132.     {
  133.       int err, res;
  134.       res = fpathconf (fd, name);
  135.       err = errno;
  136.       close (fd);
  137.       errno = err;
  138.       KPRINTF (("&errno = %lx, errno = %ld\n", &errno, errno));
  139.       return res;
  140.     }
  141.  
  142.   return -1;
  143. }
  144.